/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * PanelDirectorio.java
 *
 * Created on 22/12/2009, 03:26:28 PM
 */

package org.constant.gui;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import org.constant.gui.acciones.SeleccionTabla;
import org.constant.gui.util.Formato;

/**
 *
 * @author gsierra
 */
public class PanelDirectorio extends javax.swing.JPanel {
    private static final SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy k:mm:ss");
    private List<File> archivos;
    private DefaultTableModel modelo;
    private Vector columnas;

    /** Creates new form PanelDirectorio */
    public PanelDirectorio() {
        initComponents();
        modelo = (DefaultTableModel) tArchivos.getModel();
        columnas = new Vector();
        columnas.add("Nombre");
        columnas.add("Tipo");
        columnas.add("Última Modificación");
        columnas.add("Tamaño");
        this.setVisible(true);
    }

    public void actualizaInformacion(List<File> archivos){
        this.archivos = archivos;
        this.tfTotalArchivos.setText(Integer.toString(archivos.size()));
        actualizaTabla();
    }

    private void actualizaTabla() {
        limpiaModelo();
        for(File archivo: archivos){
            Object[] datos = new Object[4];
            datos[0] = archivo.getName();
            datos[1] = archivo.isDirectory() ? "Directorio" : "Archivo " + archivo.getAbsolutePath().substring(archivo.getAbsolutePath().lastIndexOf(".") + 1);
            datos[2] = formato.format(new Date(archivo.lastModified()));
            datos[3] = Formato.formateaNúmero(archivo.length());
            modelo.addRow(datos);
        }
        tArchivos.setModel(modelo);
        SeleccionTabla listener = new SeleccionTabla(tArchivos, archivos);
        tArchivos.getSelectionModel().addListSelectionListener(listener);
        tArchivos.getColumnModel().getSelectionModel().addListSelectionListener(listener);
        tArchivos.updateUI();
    }


    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        listaArchivos = new java.util.LinkedList<File>();
        jScrollPane1 = new javax.swing.JScrollPane();
        tArchivos = new javax.swing.JTable();
        jLabel1 = new javax.swing.JLabel();
        tfTotalArchivos = new javax.swing.JTextField();

        tArchivos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Nombre", "Tipo", "Última Modificación", "Tamaño"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                true, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tArchivos.setColumnSelectionAllowed(true);
        jScrollPane1.setViewportView(tArchivos);
        tArchivos.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);

        jLabel1.setText("Total Archivos");

        tfTotalArchivos.setEditable(false);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(tfTotalArchivos, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 223, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(tfTotalArchivos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
        );
    }// </editor-fold>//GEN-END:initComponents


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private java.util.List listaArchivos;
    private javax.swing.JTable tArchivos;
    private javax.swing.JTextField tfTotalArchivos;
    // End of variables declaration//GEN-END:variables

    private void limpiaModelo() {
        while(modelo.getRowCount() != 0)
            modelo.removeRow(0);
    }

}
